iT邦幫忙

2024 iThome 鐵人賽

DAY 10
1

終於要開始部署第一個服務啦 *^O^*


簡單的 Demo,選用輕量的工具演示。

使用工具:minikube
官方文件:minikube start
執行環境:macOS 14.0

  1. 先啟動 docker,不然會像這樣:
    https://ithelp.ithome.com.tw/upload/images/20240911/20168437aMV51gRx4a.png
    如果還沒安裝 docker 可以參考前面的章節:Day-4 在學習 Kubernetes 之前:Docker

  2. 依照環境選擇安裝版本,
    https://ithelp.ithome.com.tw/upload/images/20240911/20168437gCachYIKWa.png
    並執行安裝指令

    brew install minikube
    

    安裝時間不到兩分鐘,其實蠻快就能安裝好。

  3. 執行啟動指令

    minikube start
    

    初次啟動需要花時間下載 kubernetes &建立 Cluster,請耐心等待 (*¯︶¯*)
    或是去上個洗手間再買杯咖啡,他真的蠻花時間的 (大概等了15分鐘)

    完成後的畫面是這個樣子的:
    https://ithelp.ithome.com.tw/upload/images/20240911/201684376xYkva1Rw0.png
    簡單檢視一下執行內容:

    • 下載 kubernetes (v1.30)
    • 執行 docker 建立容器
    • 建立名為 minikube 的叢集

    可以注意一下這段內容:

    ❗  This container is having trouble accessing https://registry.k8s.io
    💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
    

    kubernetes 預設網路配置只專注在 Cluster 內部,不會提供對外連接。
    因此,如果需要連到 internet ,需要自行設定 proxy
    可參考 minikube 官方文件:Proxies and VPNs

  4. 可以執行第一個指令啦~
    讀取目前所有 namespace 中的 pod(指令 -A)

    kubectl get pod -A
    # 也可以只打縮寫:po (其實 po, pod, pods 都可以)
    kubectl get po -A
    

    取得資訊如下:
    https://ithelp.ithome.com.tw/upload/images/20240911/201684377vklsCjgS3.png
    Worker Node 中有提過,Control Plane 的 pod 都運行在名稱為 kube-systemnamespace 中,現在正好驗證一下,來看看目前的設定:
    (1) 看看 pod 在哪個 node 上

    kubectl get pods -A -o wide
    

    -o wide 是個方便的指令,可以取得較多的資訊
    https://ithelp.ithome.com.tw/upload/images/20240911/201684375Nr1xI3kSY.png
    可以看到所有的 pod 都執行在名為 minikube 的 node 上。
    那要怎麼知道他是 Worker Node 還是 Control Plane?
    \去看 node啊!/ (什麼廢話)

     kubectl get nodes
    

    執行結果如下:
    https://ithelp.ithome.com.tw/upload/images/20240911/20168437S5i7adAUza.png

  5. 驗證結束,來試試看部署第一個 pod 吧!

    kubectl run demo-pod --image=kicbase/echo-server:1.0
    

    用 image kicbase/echo-server:1.0 啟一個 pod
    https://ithelp.ithome.com.tw/upload/images/20240911/20168437vpkd2hcWrW.png
    再次執行 kubectl get pods -A 可以確認目前的 pod 運作狀態
    https://ithelp.ithome.com.tw/upload/images/20240911/20168437jpWRveN0pf.png
    除了從 STATUS 的狀態確認 pod 有正常運行,也可以看到剛部署的 pod 是落在名為 defaultnamespace 上。default 是 Cluster 建立時就會同時被創建的 namespace,作為 namespace 的預設值使用。不過在實務上,還是建議善加利用 namespace 做好環境隔離。

    如果部署或下指令後找不到,不妨看看 namespace 設定是否正確喔!

  6. 確認部署結果

    kubectl logs demo-pod
    

    https://ithelp.ithome.com.tw/upload/images/20240911/20168437SZn7LjR0fN.png


最後補充幾個管理 minikube 的指令:

  • 在不影響已部署的情況下停用
minikube pause
# 再次啟用
minikube unpause
  • 停止 Cluster
minikube stop
  • 修改 memory 可用上限 (修改後須重啟)
minikube config set memory 9001
  • 刪除所有叢集
minikube delete --all

小結

實際上手操作看看,比硬背概念有趣多啦~


上一篇
Day-9 Kubernetes 的設定檔:yaml
下一篇
Day-11 kubectl:基本介紹
系列文
Kubernetes圖解筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言